const { Service } = require('egg')
const _ = require('lodash')

class DictService extends Service {
  /**
   * 获取全部字典（键值对）
   */
  getDictAll() {
    return this.config.dict
  }

  /**
   * 获取全部字典（数组）
   */
  getDictAllArr() {
    const dict = this.config.dict
    const returnData = {}

    for (const key in dict) {
      returnData[key] = this.toArray(dict[key])
    }

    return returnData
  }

  /**
   *  获取字典（键值对）
   */
  getDict(key) {
    key = _.camelCase(key)
    return this.config.dict[key]
  }

  /**
   *  获取字典（数组）
   */
  getDictArr(key) {
    key = _.camelCase(key)
    const dict = this.getDict(key)
    const arr = this.toArray(dict)

    return arr
  }

  /**
   * 按原始数组形式对外
   */
  toArray(data) {
    const arr = []

    for (let key in data) {
      arr.push({
        label: key,
        value: data[key],
      })
    }

    return arr
  }
}

module.exports = DictService
